AWS AppSyncのID自動生成でUUIDの代わりにULIDを生成してみた
ども、ゲストブロガーのNTT東日本 大瀧です。
AWS AppSyncのユーティリティーヘルパーにULID(Universally unique Lexicographically Sortable Identifier)を自動生成する$util.autoUlid()
が最近追加されたので、試してみた様子をレポートします。
AppSync provides a set of built-in utility helpers which can be used within a GraphQL resolver to simplify interactions with data sources. We recently released support to autogenerate ULIDs, for instance. What other resolver utils would you like to see? https://t.co/M7gZddh94A
— Ed Lima (@ednergizer) January 28, 2022
ULIDとは
ULIDはUUIDと互換性のある、時系列でソート可能な識別子です。仕様と各言語の対応はGitHubで公開されています。
Pythonで操作する様子は、以下の記事がわかりやすいです。
タイムスタンプが含まれているので、例えばDynamoDBと連携するときにソートキーにすると捗りそうです。
試してみた
というわけで早速やってみましょう。DynamoDBテーブルのインポートから作成されるマッピングテンプレートではミューテーションでUUIDを自動生成する$util.autoId()
を利用しているので、これを差し替えてみます。
{ "version": "2017-02-28", "operation": "PutItem", "key": { "id": $util.dynamodb.toDynamoDBJson($util.autoId()), }, :(以下略)
{ "version": "2017-02-28", "operation": "PutItem", "key": { "id": $util.dynamodb.toDynamoDBJson($util.autoUlid()), }, :(以下略)
クエリエクスプローラでミューテーションを試してみると...
あっさり取れました!やったね!
まとめ
AWS AppSyncのID自動生成でUUIDの代わりにULIDの取得を試してみました。組み込みでかゆいところに対応できるのは嬉しいですね!